/*
 * 处理客户端连接过来的HTTP请求
 */
 
#ifndef HTTPREQ_H
#define HTTPREQ_H

#include "usbctrl.h"
#include "clientinfo.h"
#include "httpclireq.h"
#include "httpadmincol.h"

#define RECV_BUFFER_SIZE		1024		/* 接受客户端发送的最大内容长度 */
#define SEND_BUFFER_SIZE		10240		/* 发送给客户端内容的最大长度  */
#define URI_SIZE				128			/* 客户端请求的uri长度 */
#define FILE_MAX_SIZE			10240		/* 客户端请求硬盘上文件的最大长度 */
#define POST_FILE_MAX_SIZE		10240	    /* 客户端post请求的最大应答内容长度 */
#define DEAL_BUF_SIZE			256			/* 用于替换all.txt模板中的特定内容的最大长度 */
#define POST_ENTITY_SIZE		256			/* post请求获取实体内容的最大长度 */

#define TIME_OUT_SEC		10			/* select timeout of secend */
#define TIME_OUT_USEC		0			/* select timeout of usecend */

/* 处理客户端发来的HTTP请求 */
extern void httpreq(struct clientinfo ci);		/* 此处传递过来的ci中包括confd,ip,hostname,stat 其中confd是Accept的结果，ip为字符串格式的 */

/* 描述: 判断是否是HTTP协议 */
int is_http_protocol(char *msg_from_client);

/* 描述: 处理POST请求 */
extern int do_post_request(char *recv_buf);

/* 描述: 得到POST请求的实体部分 */
extern char* get_post_entity(char *recv_buf);

/* 描述: 拷贝字符串函数 */
char* str_cpy_from_to(char *src, int from, int end);

/* 描述： 把template_txtfile文件里的内容读入到template_buf中 */
extern int get_template_txtfile(char *template_txtfile, char *template_buf);

/* 描述: 根据请求的头信息,取得http请求的uri */
extern void get_uri(char *req_header, char *uri_buf);

/* 描述: 取得GET请求的本地uri,把内容放到file_buf中 */
extern int get_file_disk(char *uri, char *file_buf);

/* 描述: 把file_buf中的内容添加http相应头 */
extern int reply_normal_information(char *send_buf, char *file_buf, int file_size, char *mime_type);

#endif
